#include "task_dgu_timer.h"

#include "FreeRTOS.h"
#include "task.h"

#include "print_rtt.h"

static StackType_t xDGUTimerStack[128]; // 静态栈
static StaticTask_t xDGUTimerTCB;       // 静态 TCB（可选，省堆）

static void vDGUTimerTaskEntry(void *pvParameters)
{
  (void)pvParameters;
  volatile uint8_t i;
  BaseType_t xStatus;
//  CTRL_REQ_ORDER_STRUCT cros;
  for (;;)
  {
//    if (i == 1)
//    {
//      //
//      cros.ctrl_unit_index = 0x01;
//      cros.order_type = 0X65;
//      cros.order_data = 0x1001;
//      xStatus = xQueueSend(xCtrlUnitQueueHandle, &cros.ctrl_unit_index, 0U);
//      if (xStatus == pdPASS)
//      {
//        LOG_INFO("send data success!\r\n");
//        // 发送失败（队列满）
//        // 可添加错误处理逻辑
//      }
//      i = 0;
//    }
    vTaskDelay(pdMS_TO_TICKS(1000));
  }
}

void vDGUTimerTaskCreate(void)
{
  TaskHandle_t xHandle = NULL;

  taskENTER_CRITICAL(); // 进入临界区
  /* 创建system_led任务 - 静态方法 */
  xHandle = xTaskCreateStatic(
      (TaskFunction_t)vDGUTimerTaskEntry,                    /* 任务入口函数 */
      (const char *)"GPIO_INPUT",                             /* 任务名字 */
      (uint16_t)sizeof(xDGUTimerStack) / sizeof(StackType_t), /* 任务栈大小 */
      (void *)NULL,                                           /* 任务入口函数参数 */
      (UBaseType_t)5,                                         /* 任务的优先级 */
      (StackType_t *)xDGUTimerStack,                          /* 静态栈数组 */
      (StaticTask_t *)&xDGUTimerTCB);                         /* 静态TCB的地址 */

  if (xHandle != NULL)
  {
    LOG_INFO("Create DGU timer task success!\r\n");
  }
  taskEXIT_CRITICAL(); // 退出临界区，无论成功失败都要退出
}
